package com.hsnn.medstgmini.settlement.controller;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.settlement.model.SetAcctInfo;
import com.hsnn.medstgmini.settlement.model.SetAcctTransInfo;
import com.hsnn.medstgmini.settlement.model.SetBankAcctInfo;
import com.hsnn.medstgmini.settlement.model.form.BankAcct;
import com.hsnn.medstgmini.settlement.model.form.BankAcctLog;
import com.hsnn.medstgmini.settlement.service.BankAcctInfoManager;
import com.hsnn.medstgmini.settlement.service.SettleAcctTransInfoManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;

/**
 * 
 * @author 言科
 * @category 卫生局（核算中心）账户信息
 * @date 2015年7月22日
 */
@Controller
@RequestMapping("/auditAcctInfo")
public class AcctInfoBureauController {

	private static final Logger log = Logger
			.getLogger(AcctInfoBureauController.class);

	@Autowired
	private BankAcctInfoManager bankAcctInfoManager;

	@Autowired
	private SettleAcctTransInfoManager settleAcctTransInfoManager;

	@Autowired
	private HttpServletRequest request;

	@Autowired
	private HttpSession session;

	/**
	 * 
	 * @category 获取当前登陆人信息
	 * @author 言科
	 * @date 2015年7月22日 SysUser
	 */
	public SysUser getUser() {
		return (SysUser) session.getAttribute(Constants.USERINFO);
	}

	/**
	 * 
	 * @category 跳转到卫生局账户信息页面
	 * @author 言科
	 * @date 2015年7月22日 String
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping("/toAuditAcctInfo")
	public String toAcctInfoBureau(Model model) {
		Pagination page = new Pagination(request);
		SysUser user = getUser();
		// 查询帐户信息
		SetAcctInfo setAcctInfo = bankAcctInfoManager.getAcctInfo(user);
		model.addAttribute("setAcctInfo", setAcctInfo);

		// 查询银行卡信息
		bankAcctInfoManager.getBankAcctInfoList(page, null, user);
		List<Map<String, Object>> bankAcctList = (List<Map<String, Object>>) page
				.getRows();
		Map<String, Object> bankAcctInfo = null;
		if (bankAcctList != null && !bankAcctList.isEmpty()) {
			bankAcctInfo = bankAcctList.get(0);
		}
		model.addAttribute("bankAcctInfo", bankAcctInfo);

		// 查询开户行列表
		List<Map<String, String>> bankList = bankAcctInfoManager.getBankList();
		model.addAttribute("bankList", bankList);

		return "/settle/account/audit/auditAcctInfo";
	}

	/**
	 * 
	 * @category 核算中心端 跳转到日志页面
	 * @author 言科
	 * @date 2015年7月23日 String
	 */
	@RequestMapping("/toAuditAcctInfoLog")
	public String toBankAcctInfoLog(Model model, String bankAcctId) {
		model.addAttribute("bankAcctId", bankAcctId);
		return "/settle/account/audit/auditAcctInfoLog";
	}

	/**
	 * 
	 * @category 获取日志查看列表数据
	 * @author 言科
	 * @date 2015年7月30日 Pagination
	 */
	@RequestMapping("/getAuditAcctInfoLog")
	@ResponseBody
	public Pagination getBankAcctInfoLog(BankAcctLog bankAcctLog) {
		Pagination page = new Pagination(request);
		return bankAcctInfoManager.getBankAcctLogList(bankAcctLog, page);

	}

	/**
	 * @category 跳转到交易明细页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toAuditAcctTransInfo")
	public String toSetAcctTransInfoHosp(HttpServletRequest request,
			SetAcctInfo acctInfo) {
		SysUser user = (SysUser) request.getSession().getAttribute(
				Constants.USERINFO);
		acctInfo = bankAcctInfoManager.getAcctInfo(user);
		log.info(acctInfo);
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/audit/auditAcctTransInfo";
	}

	/**
	 * @category 获取交易明细列表数据
	 * @author 韩守松
	 * @date 2015年7月22日
	 * @param @param request
	 * @param @param page
	 * @param @param acctTransInfo
	 * @param @return
	 */
	@RequestMapping("/getAuditAcctTransInfo")
	@ResponseBody
	public Pagination getSetAcctTransInfoHospData(HttpServletRequest request,
			Pagination page, SetAcctTransInfo acctTransInfo) {
		try {
			SysUser user = (SysUser) request.getSession().getAttribute(
					Constants.USERINFO);
			page = settleAcctTransInfoManager.getBankAcctTransInfoList(page,
					acctTransInfo, user);
		} catch (Exception e) {
			log.info("获取医疗机构交易明细信息错误-->" + e);
		}
		return page;
	}

	/**
	 * @category 跳转核算中心审核 医疗机构账户查看
	 * @date 2015年7月24日
	 * @param model
	 * @return
	 */
	@RequestMapping("/toAuditAcctInfoHospSee")
	public String toAuditAcctInfoHospSee(Model model) {
		return "/settle/account/audit/auditAcctInfoHospSee";
	}

	/**
	 * @category 医疗机构账户查看
	 * @date 2015年7月24日
	 * @param acctInfo
	 * @return
	 */
	@RequestMapping("/getAuditAcctInfoHospSee")
	@ResponseBody
	public Pagination getAuditAcctInfoHospSee(SetAcctInfo acctInfo) {
		Pagination page = new Pagination(request);
		try {
			bankAcctInfoManager.getAuditHospAcctList(acctInfo, getUser(), page);
			page.setSuccess(true);
		} catch (Exception e) {
			log.error("",e);
		}
		return page;
	}
	
	/**
	 * @category 跳转到医疗机构账户 管理   银行账户信息查看页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toAuditAcctInfoHospBankList")
	public String toAuditAcctInfoHospBankList(String orgId, SetAcctInfo acctInfo) {
		acctInfo = bankAcctInfoManager.getAcctInfoById(orgId);
		log.info(acctInfo);
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/audit/auditAcctInfoHospBankList";
	}

	/**
	 * @category 获取银行卡列表数据
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @param page
	 * @param @param bankAcct
	 * @param @return
	 */
	@RequestMapping("/getAuditAcctInfoHospBankList")
	@ResponseBody
	public Pagination getAuditAcctInfoHospBankList(Pagination page,
			SetBankAcctInfo bankAcct) {
		try {
			page = bankAcctInfoManager.getBankAcctInfoList(page, bankAcct);
		} catch (Exception e) {
			log.error("查询数据出错" + e);
		}
		return page;
	}
	
	
	/**
	 * @category 跳转到医疗机构账户 管理   银行账户信息查看页面  编辑页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toAuditAcctInfoHospBankListEdit")
	public String toAuditAcctInfoHospBankListEdit(Model model, String orgId,
			String bankAcctId, SetBankAcctInfo bankAcctInfo, Integer orgType,SetAcctInfo setAcctInfo) {


		// 查询帐户信息
		setAcctInfo = bankAcctInfoManager.getAcctInfoById(orgId);
		model.addAttribute("setAcctInfo", setAcctInfo);

		bankAcctInfo = bankAcctInfoManager.getBankAcctById(bankAcctId);
		model.addAttribute("bankAcctInfo", bankAcctInfo);

		// 查询开户行列表
		List<Map<String, String>> bankList = bankAcctInfoManager.getBankList();
		model.addAttribute("bankList", bankList);

		return "/settle/account/audit/auditAcctInfoHospBankListEdit";
	}
	
	
	
	

	
	/**
	 * @category 跳转到医疗机构账户管理 收支明细查看页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toAuditAcctInfoHospTrans")
	public String toAuditAcctInfoHospTrans(String orgId, SetAcctInfo acctInfo) {
		acctInfo = bankAcctInfoManager.getAcctInfoById(orgId);
		log.info(acctInfo);
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/audit/auditAcctInfoHospTrans";
	}

	/**
	 * @category 获取医疗机构账户管理 收支明细列表数据
	 * @author 韩守松
	 * @date 2015年7月22日
	 * @param @param request
	 * @param @param page
	 * @param @param acctTransInfo
	 * @param @return
	 */
	@RequestMapping("/getAuditAcctInfoHospTrans")
	@ResponseBody
	public Pagination getAuditAcctInfoHospTrans(HttpServletRequest request,
			Pagination page, SetAcctTransInfo acctTransInfo) {
		try {
			page = settleAcctTransInfoManager.getBankAcctTransInfoList(page,
					acctTransInfo);
		} catch (Exception e) {
			log.info("获取医疗机构交易明细信息错误-->" + e);
		}
		return page;
	}
	
	
	

	/**
	 * @category 跳转医疗机构账户审核列表
	 * @date 2015年7月24日
	 * @param model
	 * @return
	 */
	@RequestMapping("/toAuditHospAcctInfoList")
	public String toAuditHospAcctInfoList(HttpServletRequest request,
			SetAcctInfo acctInfo) {
		SysUser user = (SysUser) request.getSession().getAttribute(
				Constants.USERINFO);
		acctInfo = bankAcctInfoManager.getAcctInfo(user);
		log.info(acctInfo);
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/audit/auditHospAcctInfoList";
	}
	
	

	/**
	 * @category 获取医疗机构账户审核列表
	 * @date 2015年7月24日
	 * @param acctInfo
	 * @return
	 */

	@RequestMapping("/getAuditHospAcctInfoList")
	@ResponseBody
	public Pagination getAuditHospAcctInfoList(BankAcct bankAcct) {
		Pagination page = new Pagination(request);
		try {
			bankAcctInfoManager.getAuditHospAcctInfoList(bankAcct, page,getUser());
			page.setSuccess(true);
		} catch (Exception e) {
			log.error("",e);
		}
		return page;
	}

	/**
	 * @category 跳转医疗机构账户审核页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toAuditHospAcctInfo")
	public String toAcctInfoBankCheck(Model model, String orgIdBank,
			String bankAcctId, SetBankAcctInfo bankAcctInfo, Integer orgType) {

		model.addAttribute("orgId", orgIdBank);

		// 查询帐户信息
		SetAcctInfo setAcctInfo = bankAcctInfoManager
				.getAcctInfoById(orgIdBank);
		model.addAttribute("setAcctInfo", setAcctInfo);

		bankAcctInfo = bankAcctInfoManager.getBankAcctById(bankAcctId);
		model.addAttribute("bankAcctInfo", bankAcctInfo);

		// 查询开户行列表
		List<Map<String, String>> bankList = bankAcctInfoManager.getBankList();
		for(int i = 0; i < bankList.size(); i++){
			Map<String, String> map = bankList.get(i);
			if(map.get("bankAcctNo").equals(bankAcctInfo.getDepositBank())){
				model.addAttribute("fatherBankName",map.get("fatherBankName"));
			}
		}
		model.addAttribute("bankList", bankList);
		

		return "/settle/account/audit/auditHospAcctInfo";
	}
	
	
	

	
}
